[id].vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <!-- 头部 -->
  3. <templateHead></templateHead>
  4. <!-- 菜单 -->
  5. <templateMenu></templateMenu>
  6. <!-- 内容 -->
  7. <div v-for="(item,index) in templateData" :key="index">
  8. <!--广告组件-->
  9. <div v-if="item.sectorName=='adSector'">
  10. <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag"></templateAd>
  11. </div>
  12. <!--资讯正文-->
  13. <div v-if="item.sectorName=='articleSector'">
  14. <templateArticle :skinId="skinId" :templateData="item.componentList" :articleData="articleData" :routeId="routeId"></templateArticle>
  15. </div>
  16. </div>
  17. <!-- 底部 -->
  18. <templateFoot></templateFoot>
  19. </template>
  20. <script setup lang="ts">
  21. import type { IArticleDetail,ISurveyResult,ISurveyResultData } from '@/utils/dataInterface';
  22. //0.加载全局模板组件 start---------------------------------------->
  23. //0.1全局通栏
  24. import templateHead from '@/components/template/sector/head/1200x200/1.vue'
  25. import templateMenu from '@/components/template/sector/menu/1200x130/1.vue'
  26. import templateFoot from '@/components/template/sector/foot/1200x580/1.vue'
  27. //0.2局部通栏
  28. //0.2.1广告组件
  29. import templateAd from '@/components/template/sector/body/ad/1200x90/1.vue'
  30. //0.2.2资讯正文通栏
  31. import templateArticle from '@/components/template/sector/body/article/article/1200x1710/1.vue'
  32. //0.加载全局模板组件 end---------------------------------------->
  33. //1.获得基本信息单元 start---------------------------------------->
  34. //1.1获得页面依赖
  35. import { ref, onMounted } from 'vue';
  36. //1.2使用url查询导航池id
  37. const targetSegment = getRoutePath(1);//当前页面的url路径 这是第一层 所以获得域名后面的第一层url
  38. const routeId = ref<number>(0);//当前url路径代表的cid
  39. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  40. method: 'GET',
  41. query: {
  42. 'pinyin': targetSegment,
  43. },
  44. });
  45. if (getRouteId.code == 200) {
  46. routeId.value = getRouteId.data.category_id
  47. }
  48. //1.3获得pinia源
  49. import { useTemplateBaseStore } from '@/stores/templateBase'
  50. const templateBaseStore:any = useTemplateBaseStore()
  51. //1.4获得该页的皮肤id - 在每个组件中也是同样的获得方法
  52. const skinId = ref<number>(0)
  53. const websiteId = ref<number>(0)
  54. //1.5获得站点基本信息
  55. const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
  56. method: 'GET',
  57. query: {
  58. 'link_textnum':24,
  59. 'link_imgnum':18,
  60. 'link_footnum':4
  61. },
  62. });
  63. if (responseStatus.code == 200) {
  64. //1.6.1设置站点基本信息
  65. templateBaseStore.setWebSiteInfo(responseStatus.data)
  66. websiteId.value = responseStatus.data.website_head.id;
  67. //1.6.2设置皮肤id
  68. skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
  69. }
  70. //1.获得基本信息单元 end---------------------------------------->
  71. //2.页面数据 start---------------------------------------->
  72. //2.1获得页面数据
  73. const response:any = await requestDataPromise('/client/indexData', {
  74. method: 'POST',
  75. body: {
  76. 'website_id':websiteId.value,
  77. 'getpage':'article'
  78. },
  79. });
  80. //2.2模板数据
  81. const templateData = response.data.template.article;
  82. console.log(templateData)
  83. //2.3广告数据
  84. const adData = ref<any[]>([]);
  85. adData.value.push(response.data.ad.top)
  86. for(let item of response.data.ad.article){
  87. adData.value.push(item)
  88. }
  89. templateBaseStore.setAdList(adData.value)
  90. //2.4获得文章详情
  91. const route:any = useRoute();
  92. const articleId = parseInt(route.params.id); //获得该页面的id
  93. const articleData = ref<IArticleDetail>({
  94. title:'',
  95. introduce:'',
  96. keyword:'',
  97. author:'',
  98. copyfrom:'',
  99. content:'',
  100. website_name:'',
  101. updated_at:'',
  102. suffix:''
  103. });
  104. const mkdata = await requestDataPromise('/web/selectWebsiteArticleInfo', {
  105. method: 'GET',
  106. query: {
  107. 'articleid': articleId
  108. },
  109. });
  110. if (mkdata.code == 200) {
  111. //设置文章正文
  112. articleData.value = mkdata.data;
  113. //设置seo
  114. let seoTitle = mkdata.data.title;
  115. let seoDescription = mkdata.data.introduce;
  116. let seoKeywords = mkdata.data.keyword;
  117. let seoSuffix = mkdata.data.suffix;
  118. let seoName = mkdata.data.website_name;
  119. useHead({
  120. title: seoTitle + "_" + seoName + "_" + seoSuffix,
  121. meta: [
  122. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  123. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  124. ]
  125. });
  126. }
  127. //2.页面数据 end---------------------------------------->
  128. </script>
  129. <style lang="less" scoped>
  130. @import url('@/assets/css/detail.less');
  131. </style>